/**
 * 防抖函数
 * @param func 需要防抖的函数
 * @param delay 延迟时间(毫秒)
 * @returns 防抖处理后的函数
 */
export function debounce(func: Function, delay: number): Function {
  let timer: number | null = null;

  return function(this: any, ...args: any[]) {
    if (timer) {
      clearTimeout(timer);
    }

    timer = setTimeout(() => {
      func.apply(this, args);
      timer = null;
    }, delay);
  };
}